#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int sub(int a, int b) {
    return a - b;
}

int mul(int a, int b) {
    return a * b;
}

int div(int a, int b) {
    if(b == 0) {
        printf("错误: 除数不能为0.\n");
        return 0;
    }
    return a / b;
}

int main() {
    int num1, num2, result; // 定义变量num1, num2和result用于存储数字和计算结果
    char operator; // 定义变量operator用于存储运算符
    int count = 0; // 定义变量count用于计数运算符和数字的数量
    int numbers[100]; // 定义数组numbers用于存储输入的数字
    char operators[100]; // 定义数组operators用于存储输入的运算符
    char input[100]; // 定义数组input用于存储用户输入的字符串

    printf("请输入一个简单的数学表达式（例如：2 + 3）：");
    fgets(input, 100, stdin); // 从标准输入读取一行字符串，存储到input数组中
    sscanf(input, "%d", &numbers[count]); // 从input数组中解析出第一个数字，存储到numbers数组中

    sscanf(input, "%c", &operator); // 从input数组中解析出第一个运算符，存储到operators数组中

    printf("number1 - %d\n",numbers[0]); // 输出输入的表达式

    // 循环解析input数组中的运算符和数字，直到没有更多运算符和数字
    while(sscanf(input, " %c %d", &operators[count], &numbers[count+1]) == 2) {
        printf("input - %d\n",input[count]); // 输出输入的表达式
        printf("operator - %c\n",operators[count]); // 输出解析出的运算符
        printf("number - %d\n",numbers[count+1]); // 输出解析出的数字
        count++; // 每成功解析出一对运算符和数字，计数器count加1
    }
printf("\n-------------------- %d\n",count); // 输出输入的表达式
printf("input = %s",input); // 输出输入的表达式
// 输出解析出的运算符和数字
    for(int i = 0; i < count; i++) {
        printf("%d，%c", numbers[i], operators[i]);
    }
printf("\n--------------------\n"); // 输出输入的表达式

    result = numbers[0]; // 初始化结果为第一个数字
    // 遍历所有运算符，进行相应的计算
    for(int i = 0; i < count; i++) {
        switch(operators[i]) { // 根据运算符进行不同的计算
            case '+':
                result = add(result, numbers[i+1]); // 调用add函数进行加法运算
                break;
            case '-':
                result = sub(result, numbers[i+1]); // 调用sub函数进行减法运算
                break;
            case '*':
                result = mul(result, numbers[i+1]); // 调用mul函数进行乘法运算
                break;
            case '/':
                result = div(result, numbers[i+1]); // 调用div函数进行除法运算
                break;
            default:
                printf("错误: 输入的运算符不正确.\n"); // 如果运算符不正确，输出错误信息
                return 0; // 返回0，结束程序
        }
    }

    printf("结果为: %d\n", result); // 输出计算结果

    return 0; // 返回0，结束程序
}
